package com.eian.boot.common.id.model;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * ID格式配置实体
 *
 * @author alex.meng
 */
@Data
@Table("id_format_config")
public class IdFormatConfigEntity {

    /**
     * 业务类型标识
     */
    @Id
    @Column("biz_type")
    private String bizType;

    /**
     * ID主体内容类型
     */
    @Column("id_content_type")
    private String idContentType;

    /**
     * 前缀模板类型
     */
    @Column("prefix_template")
    private String prefixTemplate;

    /**
     * ID前缀固定值
     */
    @Column("prefix")
    private String prefix;

    /**
     * 后缀模板类型
     */
    @Column("suffix_template")
    private String suffixTemplate;

    /**
     * ID后缀固定值
     */
    @Column("suffix")
    private String suffix;

    /**
     * 补位字符
     */
    @Column("pad_char")
    private Character padChar;

    /**
     * ID总长度（不包括前后缀，0表示不补位）
     */
    @Column("id_length")
    private Integer idLength;

    /**
     * 补位位置：LEFT-左侧补位, RIGHT-右侧补位
     */
    @Column("pad_position")
    private String padPosition;

    /**
     * 是否使用混淆：0-否, 1-是
     */
    @Column("use_obfuscate")
    private Boolean useObfuscate;

    /**
     * 状态：0-禁用, 1-启用
     */
    @Column("status")
    private Integer status;

    /**
     * 业务描述
     */
    @Column("description")
    private String description;

    /**
     * 创建时间
     */
    @Column(value = "created_at", onInsertValue = "now()")
    private LocalDateTime createdAt;

    /**
     * 修改时间
     */
    @Column(value = "modified_at", onInsertValue = "now()", onUpdateValue = "now()")
    private LocalDateTime modifiedAt;
}

